def  cheese_and_crackers(cheese_count, boxes_of_crackers)
  puts "You have #{cheese_count} cheeses!"
  puts "You have #{boxes_of_crackers} boxes of crackers!"
  puts "Man that's enough for a party!"
  puts "Get a blanket."
  puts # a blank line
end

puts "We can just give the function numbers directly:"
cheese_and_crackers(20, 30)

puts "Or, we can use variables from our svript:"
amount_of_cheese = 10
amount_of_crackers = 50
cheese_and_crackers(amount_of_cheese, amount_of_crackers)

puts "We can even do math inside too:"
cheese_and_crackers(10 + 20, 5 + 6)

puts "And we can combine the two, variables and math:"
cheese_and_crackers(amount_of_cheese + 100, amount_of_crackers + 1000)
#明白这个程序的意思吗？定义了一个方法，在调用的时候通过不同的方式给其传递参数，可以直接给值，可以给变量（本质上还是值），可以给值运算后的结果（也是值），可以给变量运算后的结果（还是值），可以给变量和值运算后的结果（值）。 这里主要讲的应该是， 方法实际参数和形式参数的问题， 这个我想只要你搞得清楚方法定义和方法调用的区别， 就应该清楚了， 不过如果你还是不清楚， 说出来吧。